package com.health.system.service.impl;

import java.util.List;
import com.health.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.health.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.health.system.domain.MallProduct;
import com.health.system.mapper.MallCategoryMapper;
import com.health.system.domain.MallCategory;
import com.health.system.service.IMallCategoryService;

/**
 * 分类管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-10-29
 */
@Service
public class MallCategoryServiceImpl implements IMallCategoryService 
{
    @Autowired
    private MallCategoryMapper mallCategoryMapper;

    /**
     * 查询分类管理
     * 
     * @param categoryId 分类管理主键
     * @return 分类管理
     */
    @Override
    public MallCategory selectMallCategoryByCategoryId(Long categoryId)
    {
        return mallCategoryMapper.selectMallCategoryByCategoryId(categoryId);
    }

    /**
     * 查询分类管理列表
     * 
     * @param mallCategory 分类管理
     * @return 分类管理
     */
    @Override
    public List<MallCategory> selectMallCategoryList(MallCategory mallCategory)
    {
        return mallCategoryMapper.selectMallCategoryList(mallCategory);
    }

    /**
     * 新增分类管理
     * 
     * @param mallCategory 分类管理
     * @return 结果
     */
    @Transactional
    @Override
    public int insertMallCategory(MallCategory mallCategory)
    {
        mallCategory.setCreateTime(DateUtils.getNowDate());
        int rows = mallCategoryMapper.insertMallCategory(mallCategory);
        insertMallProduct(mallCategory);
        return rows;
    }

    /**
     * 修改分类管理
     * 
     * @param mallCategory 分类管理
     * @return 结果
     */
    @Transactional
    @Override
    public int updateMallCategory(MallCategory mallCategory)
    {
        mallCategory.setUpdateTime(DateUtils.getNowDate());
        mallCategoryMapper.deleteMallProductByCategoryId(mallCategory.getCategoryId());
        insertMallProduct(mallCategory);
        return mallCategoryMapper.updateMallCategory(mallCategory);
    }

    /**
     * 批量删除分类管理
     * 
     * @param categoryIds 需要删除的分类管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteMallCategoryByCategoryIds(Long[] categoryIds)
    {
        mallCategoryMapper.deleteMallProductByCategoryIds(categoryIds);
        return mallCategoryMapper.deleteMallCategoryByCategoryIds(categoryIds);
    }

    /**
     * 删除分类管理信息
     * 
     * @param categoryId 分类管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteMallCategoryByCategoryId(Long categoryId)
    {
        mallCategoryMapper.deleteMallProductByCategoryId(categoryId);
        return mallCategoryMapper.deleteMallCategoryByCategoryId(categoryId);
    }

    /**
     * 新增商品管理信息
     * 
     * @param mallCategory 分类管理对象
     */
    public void insertMallProduct(MallCategory mallCategory)
    {
        List<MallProduct> mallProductList = mallCategory.getMallProductList();
        Long categoryId = mallCategory.getCategoryId();
        if (StringUtils.isNotNull(mallProductList))
        {
            List<MallProduct> list = new ArrayList<MallProduct>();
            for (MallProduct mallProduct : mallProductList)
            {
                mallProduct.setCategoryId(categoryId);
                list.add(mallProduct);
            }
            if (list.size() > 0)
            {
                mallCategoryMapper.batchMallProduct(list);
            }
        }
    }
}
